For vectors I'd like to address all x y z without offset.
So base will have to be something else than BP.
SI|DI is nice, that way I won't have trouble with 

Does the deltas need to be -4 0 +4, or do 0 4 100h or something work too? (It'd work if the constant vectors could be split too, so nah.)

---------------------
[DI] [DI+BX] [DI+BP] looks nice: DI=900h, BX=4 for stack addressing
[SI]=100h (default, consts around 100h), or push and use paired with DI (two-vector functions: add, sub, dot, ...)

SI=100  DI=1000  BX=4  BP=8

6$ setup: mov bl,8 | mov al,4 | xchg ax,bp | xchg ax,di   (assume ah=0 bh=0)

primary vector:   [DI]=1000 [DI+BX]=1004 [DI+BP]=1008
secondary vector: [SI] [SI+BX] [SI+BP]
  mov si,di      (same as primary)
  lea si,[di+N]  (A00)
  xor bx,bx      (100 - constant)
  mov bx,si      (200)
  add si,bp
  
constants in code: [SI]=100 [SI+BX]=104 [SI+BP]=108
stack:           [BX+N] [BP+N]

---------------------
BP=900 SI=100 DI=108 BX=4

primary vector:   [BP+SI]=900 [BP+SI+4]=904 [BP+DI]=908
secondary vector: [BX+SI] [BX+SI+4] [BX+DI]  (Addressing constants only need to set BL.)
tertiary vector:  [BX] [BX+4] [BX+8]
  mov bx,bp      (same as primary)
  lea bx,[bp+si] (A00)
  xor bx,bx      (100 - constant)
  mov bx,si      (200)
  add bx,si      (old+100)
  sub bx,si      (old-100)
  
constants in code: [BX+SI] [SI] [BX+DI] [DI]
stack:           [BX+N]
  
--------------------
